package com.hulk.dryad.common.annotation;

import java.lang.annotation.*;


/**
 * @author hulk
 */
@Inherited
@Target(ElementType.METHOD)
@Retention(value = RetentionPolicy.RUNTIME)
public @interface Idempotent {

  /**
   * 幂等操作的唯一标识，使用spring el表达式 用#来引用方法参数
   *
   * @return Spring-EL expression
   */
    String[] keys() default {};

	/**
	 *
	 * 有效期 默认：2000 毫秒 有效期要大于程序执行时间，否则请求还是可能会进来
	 * 支持 ms（毫秒），s（秒默认），m（分），h（小时），d（天）等单位
	 * @return expireTime
	 */
	String expireTime() default "2000ms";

	/**
	 * 提示信息，可自定义
	 * @return String
	 */
	String info() default "重复请求，请稍后重试";

	/**
	 * 是否在业务完成后删除key true:删除 false:不删除
	 * @return boolean
	 */
	boolean delKey() default false;

}
